-- 这是FN016的主控制脚本
PROJECT = "FN016_4G_DPU_12"
VERSION = "0.0.3"
PRODUCT_KEY = "g95jvGltz5wPyyqWkCvUPio18YJjmLHo"

log.info("main", PROJECT, VERSION)

-- sys库是标配
sys = require "sys"
libfota = require "libfota"

--添加硬狗防止程序卡死，在支持的设备上启用这个功能
if wdt then
    wdt.init(9000)--初始化watchdog设置为9s
    sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
end

if rtos.bsp() == "EC618" and pm and pm.PWK_MODE then
    pm.power(pm.PWK_MODE, false)
end

-- ///////////////////////////////////////////////////////////////
local sys_led_pin = 27
local LEDA = gpio.setup(sys_led_pin, 0, gpio.PULLDOWN)

local pin_assemble = {17,21,20,16,2,24,22,11,8,10,28,9,1} -- GPIO号
local LED_dev = {}


-- 初始化GPIO函数
function init_gpio()
    -- 批量初始化
    for i=1, #pin_assemble do
        LED_dev[i] = gpio.setup(pin_assemble[i],0,gpio.PULLUP)
        log.info(PROJECT,"初始化GPIO IO为输出模式",i,"引脚号为：",pin_assemble[i]) -- 打印初始化信息
    end
end
-- 主函数
function main()
    
    init_gpio()

    while 1 do
        
        sys.wait(1000)
    end
end
function sys_led_user()
    --开始流水灯
    local count = 0
    while 1 do
    --流水灯程序
        sys.wait(500) --点亮时间
        -- 轮流点灯
        LEDA(count % 3 == 0 and 1 or 0)
        count = count + 1
    end
end
function fota_cb(ret)
    log.info("fota", ret)
    if ret == 0 then
        rtos.reboot()
    end
end

-- 主代码逻辑------------------------------------------
-- 统一联网函数
sys.taskInit(function()
    -----------------------------
    -- 统一联网函数, 可自行删减
    ----------------------------
    if wlan and wlan.connect then
        -- wifi 联网, ESP32系列均支持, 要根据实际情况修改ssid和password!!
        local ssid = "luatos1234"
        local password = "12341234"
        log.info("wifi", ssid, password)
        -- TODO 改成自动配网
        wlan.init()
        wlan.setMode(wlan.STATION) -- 默认也是这个模式,不调用也可以
        wlan.connect(ssid, password, 1)
    elseif mobile then
        -- EC618系列, 如Air780E/Air600E/Air700E
        -- mobile.simid(2) -- 自动切换SIM卡, 按需启用
        -- 模块默认会自动联网, 无需额外的操作
    elseif w5500 then
        -- w5500 以太网
        w5500.init(spi.HSPI_0, 24000000, pin.PC14, pin.PC01, pin.PC00)
        w5500.config() --默认是DHCP模式
        w5500.bind(socket.ETH0)
    elseif socket then
        -- 适配了socket库也OK, 就当1秒联网吧
        sys.timerStart(sys.publish, 1000, "IP_READY")
    else
        -- 其他不认识的bsp, 循环提示一下吧
        while 1 do
            sys.wait(1000)
            log.info("bsp", "本bsp可能未适配网络层, 请查证")
        end
    end
    -- 默认都等到联网成功
    sys.waitUntil("IP_READY")
    sys.publish("net_ready")
end)
sys.taskInit(function()
    sys.waitUntil("net_ready")
    libfota.request(fota_cb)
end)
sys.timerLoopStart(libfota.request, 3600000, fota_cb)
sys.taskInit(main)
sys.taskInit(sys_led_user)
-- 用户代码已结束---------------------------------------------
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!
